
# 本例使用一列刺激-行动，构成一条长链。没有使用状态变化

def main():
    lib = Lib()
    # 当在【静息】状态接收到【刺激0】刺激，发出【行动1】动作
    lib.reflect("刺激0", "静息", "行动1")
    # 当在【静息】状态接收到【反馈1】刺激，发出【行动2】动作
    lib.reflect("反馈1", "静息", "行动2")
    # 当在【静息】状态接收到【反馈2】刺激，发出【行动3】动作
    lib.reflect("反馈2", "静息", "行动3")
    # 当在【静息】状态接收到【反馈3】刺激，发出【行动4】动作
    lib.reflect("反馈3", "静息", "行动4")
    # 当在【静息】状态接收到【反馈4】刺激，发出【行动5】动作
    lib.reflect("反馈4", "静息", "行动5")
    # 当在【静息】状态接收到【反馈5】刺激，发出【行动6】动作
    lib.reflect("反馈5", "静息", "行动6")

    test(lib, A(), time=8)



from ai import Lib, Stater, test, Timer, Passer, EnvMesEvent


class A(Stater):
    def reg_event(self, frame):
        frame.act_callback.append(self.reply)

        p = Passer(1)
        @p.bindend
        def f():
            frame.post_event(EnvMesEvent("刺激0"))
        p.reg_event(frame)

    def reply(self, frame, e):
        a = e.tag
        if a == "行动1":
            r = "反馈1"
        elif a == "行动2":
            r = "反馈2"
        elif a == "行动3":
            r = "反馈3"
        elif a == "行动4":
            r = "反馈4"
        elif a == "行动5":
            r = "反馈5"
        else:
            return

        p = Passer(1)
        @p.bindend
        def f():
            frame.post_event(EnvMesEvent(r))
        p.reg_event(frame)


main()
